1. Field of the Invention
This invention is in the field of software downloading through a broadcast digital media distribution network, particularly as downloaded to cards and especially option cards.
2. Related Art
Distribution networks for digital information such as video, audio, Internet data or voice communications continue to grow increasingly sophisticated. Receivers of such digital information that play or retransmit information must be capable of receiving not only content data, but also functional codes executable for the control and play of an expanding array of user options and interactivity. Executable application programs and operational code are stored not only in receiver hardware, but in cards which may take the form of option cards, audio or video cards, or storage cards. Application programs include those that communicate between a receiver mother board and an option card, between either a receiver or a card and either an audio or video decoder or for either to read or write flash memory. Application programs may include such functions for Internet or voice communications, as well as audio and video distribution.
Operational code and functional software in this field, as in other fields, is subject to frequent updates, changes, new versions, patches, debugging, added features and the like. Downloading new software and code by transmission through the distribution system, such as transmission by satellite, is more efficient, economical and convenient than other methods of software downloading. However, transmitted downloading of software to systems such as video and audio receivers may create, in many circumstances, difficulties with continuity of service, play and with convenience of access for users. Particularly, operational software may become non-functional during the execution of a download. A period of non-functionality interrupts service and inconveniences users. Moreover, it risks the loss of both operational code and content data should the downloading process itself be interrupted, as for example by a power failure. There is a need in the art for a system for downloading functional software that does not interrupt the use of that operational software, and does not risk loss of the software or the content upon which it acts. There is a need for a system that allows the new operational code to be verified for accuracy before being loaded for use. There is a need for backing up the operational codes so that a function may continue after an interruption in a download. Finally, there remains a continuing need for economy, especially in respect to minimizing the costs of hardware components. All these needs exist in general for receivers that execute operational code, but also exist, in particular for option cards that supplement the services of the receivers into which they are installed.
Most digital content data distribution systems work according to common familiar concepts. Multiple content data streams, video, audio or data, are divided into packets, multiplexed, transmitted and routed for use to various receivers. The MPEG protocols are illustrative of the class, and are referred to herein as characteristic of the embodiments discussed herein. The Moving Picture Experts Group (MPEG) is the expert group of the International Organization for Standardization (ISO) that has defined the MPEG standard protocols, such as the MPEG-2 standard (ISO/IEC 13818). Other protocols such as MPEG1 or DSS are alike in function although they vary in detail. Each standard is known in the art.
At some point, the video and audio content data, and other digital information must be multiplexed together to provide encoded bitstreams for delivery to the target destination. Standards set forth the manner in which video and audio are synchronized and multiplexed together, how frames are defined, how data is compressed, various syntax elements, the decoding process, and other information related to the format of a coded bitstream. Typically, video and audio data are encoded at respective video and audio encoders, and the resulting encoded video and audio data is input to an MPEG Systems encoder/multiplexer. This Systems multiplexer can also receive other inputs, such as control instructions, management information such as authorization identifiers, private data bitstreams, and time stamp information. The resulting coded, multiplexed signal is referred to as the MPEG transport stream.
The software downloads discussed herein may be transmitted among the transport stream or transmitted on a separate channel. Control instructions such as those disclosed in U.S. Pat. No. 4,985,895 to Pelkey, may be used to identify receivers to which downloads are directed.
The video and audio encoders provide encoded information to the Systems multiplexer in the form of an “elementary stream”. These elementary streams are “packetized” into packetized elementary streams which are comprised of many packets. Each packet includes a packet payload corresponding to the content data to be sent within the packet, and a packet header that includes information relating to the type, size, and other characteristics of the packet payload. Packets are frequently configured to be 256 bytes in size.
Elementary stream packets from the video and audio encoders are mapped into transport stream packets at the Systems encoder/multiplexor. Each transport stream packet includes a payload portion which corresponds to a portion of the elementary packet stream, and further includes a transport stream packet header. The transport stream packet header provides information used to transport and deliver the information stream, as compared to the elementary stream packet headers that provides information directly related to the elementary stream. Each transport packet header includes a packet identifier (PID) to identify the digital program or elementary stream to which it corresponds. Within the transport packet header is a packet identifier (PID), which is a 13-bit field used to identify transport packets which carry elementary stream data from the same elementary stream, and to define the type of payload in the transport packet payload.